import { defineStore } from 'pinia'
import { ref } from 'vue'
import { userGetInfoService } from '@/api/user'
// 用户模块 token setToken removeToken

export const useUserStore = defineStore(
  'big-user', //起的名字（随便写尽量和页面有关）
  () => {
    // 定义token
    const token = ref('')
    // 定义获取token的方法（传空字符串）
    const setToken = (newToken) => {
      token.value = newToken
    }
    // 定义删除token的方法
    const removeToken = () => {
      token.value = ''
    }
    // 定义个人信息
    const user = ref({})
    // 定义获取个人信息的请求数据的方法
    const getUser = async () => {
      const res = await userGetInfoService()
      user.value = res.data.data
    }
    // 清空个人信息（传空对象）
    const setUser = (obj) => {
      user.value = obj
    }

    return {
      // 将 token 对象和两个方法 setToken 和 removeToken 作为对象返回
      // 在其他页面调用时,可以给useUserStore()赋一个值  例如:const userStore = useUserStore()   调用方法时可以是写:userStore.setToken()设置token值
      token,
      setToken,
      removeToken,
      user,
      getUser,
      setUser
    }
  },
  { persist: true } //持久化
)
